package login;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

// 使用这个类来处理登录请求
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 1. 从请求中获取到页面提交的用户名和密码
        String userName = req.getParameter("userName");
        String password = req.getParameter("password");

        // 2. 验证用户名密码是否正确
        // 此处正常是要操作数据库进行匹配查找，但是此时为了简单就直接写成硬编码（把正确的用户名和密码写死）
        // 假定合法的用户名密码为：xiaozhou 123
        if("xiaozhou".equals(userName) && "123".equals(password)) {
            // 登陆成功
            // ① 创建一个会话
            // 用户刚登陆成功，之前是没有会话的，需要重新分配新的会话给用户：getSession
            //  * 创建sessionId和HttpSession对象
            //  * 把这两个内容以键值对的形式插入到内存的哈希表里
            //  * 把sessionId通过set-Cookie写到响应中
            HttpSession session = req.getSession(true);
            // 随意设置键值对
            session.setAttribute("userName","xiaozhou");

            // ② 重定向到“主页”
            resp.sendRedirect("index");

        } else {
            // 登录失败
            resp.setStatus(403);
            resp.setContentType("text/html; charset=utf8");
            resp.getWriter().write("抱歉 登录失败！ 请检查用户名或密码");
        }
    }
}
